/**
* Code contributed to the Learning Layers project
* http://www.learning-layers.eu
* Development is partly funded by the FP7 Programme of the European Commission under
* Grant Agreement FP7-ICT-318209.
* Copyright (c) 2014, Graz University of Technology - KTI (Knowledge Technologies Institute).
* For a list of contributors see the AUTHORS file at the top-level directory of this distribution.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package at.tugraz.sss.serv.util;
import at.tugraz.sss.serv.datatype.enums.*;
import java.io.*;
import java.util.*;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class SSLogU{
private static Logger log = null;
private static Logger evalLog = null;
private static Logger evalBlankLog = null;
public static void init(final String workDirPath) throws FileNotFoundException, IOException{
final Properties p = new Properties();
p.setProperty("log4j.rootLogger", "TRACE, console, file, eval");
p.setProperty("log4j.appender.console", "org.apache.log4j.ConsoleAppender");
p.setProperty("log4j.appender.console.layout", "org.apache.log4j.PatternLayout");
p.setProperty("log4j.appender.console.layout.ConversionPattern", "%d %5p - %m%n");
p.setProperty("log4j.appender.console.threshold", "INFO");
p.setProperty("log4j.appender.file", "org.apache.log4j.RollingFileAppender");
p.setProperty("log4j.appender.file.File", workDirPath + SSFileU.fileNameSSSLog);
p.setProperty("log4j.appender.file.MaxFileSize", "10000KB");
p.setProperty("log4j.appender.file.MaxBackupIndex", "1000");
p.setProperty("log4j.appender.file.layout", "org.apache.log4j.PatternLayout");
p.setProperty("log4j.appender.file.layout.ConversionPattern", "%d %5p - %m%n");
p.setProperty("log4j.appender.file.threshold", "INFO");
p.setProperty("log4j.appender.eval", "org.apache.log4j.RollingFileAppender");
p.setProperty("log4j.appender.eval.File", workDirPath + SSFileU.fileNameSSSEvalLog);
p.setProperty("log4j.appender.eval.MaxFileSize", "10000KB");
p.setProperty("log4j.appender.eval.MaxBackupIndex", "1000");
p.setProperty("log4j.appender.eval.layout", "org.apache.log4j.PatternLayout");
p.setProperty("log4j.appender.eval.layout.ConversionPattern", "%m%n");
p.setProperty("log4j.appender.eval.filter.1", "org.apache.log4j.varia.LevelMatchFilter");
p.setProperty("log4j.appender.eval.filter.1.levelToMatch", "TRACE");
p.setProperty("log4j.appender.eval.filter.2", "org.apache.log4j.varia.DenyAllFilter");
p.setProperty("log4j.appender.evalBlank", "org.apache.log4j.RollingFileAppender");
p.setProperty("log4j.appender.evalBlank.File", workDirPath + SSFileU.fileNameSSSEvalBlankLog);
p.setProperty("log4j.appender.evalBlank.MaxFileSize", "10000KB");
p.setProperty("log4j.appender.evalBlank.MaxBackupIndex", "1000");
p.setProperty("log4j.appender.evalBlank.layout", "org.apache.log4j.PatternLayout");
p.setProperty("log4j.appender.evalBlank.layout.ConversionPattern", "%m%n");
p.setProperty("log4j.appender.evalBlank.filter.1", "org.apache.log4j.varia.LevelMatchFilter");
p.setProperty("log4j.appender.evalBlank.filter.1.levelToMatch", "TRACE");
p.setProperty("log4j.appender.evalBlank.filter.2", "org.apache.log4j.varia.DenyAllFilter");
p.setProperty("log4j.category.fileLogger" , "INFO, file, console");
p.setProperty("log4j.additivity.fileLogger", "false");
p.setProperty("log4j.category.evalLogger", "TRACE, eval");
p.setProperty("log4j.additivity.evalLogger", "false");
p.setProperty("log4j.category.evalBlankLogger", "TRACE, evalBlank");
p.setProperty("log4j.additivity.evalBlankLogger", "false");
PropertyConfigurator.configure(p);
log = Logger.getLogger("fileLogger");
evalLog = Logger.getLogger("evalLogger");
evalBlankLog = Logger.getLogger("evalBlankLogger");
}
private SSLogU(){/* Do nothing because of only JSON Jackson needs this */ }
private static String getMsg(final String logText){
return
"thread: " + Thread.currentThread().getId() +
" class: " + Thread.currentThread().getStackTrace()[3].getClassName() +
" method: " + Thread.currentThread().getStackTrace()[3].getMethodName() +
" line: " + Thread.currentThread().getStackTrace()[3].getLineNumber() + SSStrU.backslashRBackslashN +
logText;
}
private static String getMsg(
final String logText,
final boolean fromRegistry){
if(fromRegistry){
return
"thread: " + Thread.currentThread().getId() +
" class: " + Thread.currentThread().getStackTrace()[4].getClassName() +
" method: " + Thread.currentThread().getStackTrace()[4].getMethodName() +
" line: " + Thread.currentThread().getStackTrace()[4].getLineNumber() + SSStrU.backslashRBackslashN +
logText;
}else{
return getMsg(logText);
}
}
private static String getMsg(final Exception error){
return
"thread: " + Thread.currentThread().getId() +
" class: " + Thread.currentThread().getStackTrace()[3].getClassName() +
" method: " + Thread.currentThread().getStackTrace()[3].getMethodName() +
" line: " + Thread.currentThread().getStackTrace()[3].getLineNumber() + SSStrU.backslashRBackslashN +
error;
}
private static String getMsg(
final Exception error,
final String logText){
return
"thread: " + Thread.currentThread().getId() +
" class: " + Thread.currentThread().getStackTrace()[3].getClassName() +
" method: " + Thread.currentThread().getStackTrace()[3].getMethodName() +
" line: " + Thread.currentThread().getStackTrace()[3].getLineNumber() + SSStrU.backslashRBackslashN +
logText + SSStrU.backslashRBackslashN +
error;
}
private static String getMsg(
final Exception error,
final boolean fromRegistry){
if(fromRegistry){
return
"thread: " + Thread.currentThread().getId() +
" class: " + Thread.currentThread().getStackTrace()[4].getClassName() +
" method: " + Thread.currentThread().getStackTrace()[4].getMethodName() +
" line: " + Thread.currentThread().getStackTrace()[4].getLineNumber() + SSStrU.backslashRBackslashN +
error;
}else{
return getMsg(error);
}
}
public static void info(final String logText){
log.info(getMsg(logText));
}
public static void info(
final String logText,
final boolean provideRuntimeInfo){
if(provideRuntimeInfo){
log.info(getMsg(logText));
}else{
log.info(logText);
}
}
public static void info(
final String logText,
final Exception error){
log.info(getMsg(error, logText));
}
public static void info(
final String logText,
final Exception error,
final boolean provideRuntimeInfo){
if(provideRuntimeInfo){
log.info(getMsg(error, logText));
}else{
log.info(error.getMessage() + SSStrU.blank + logText);
}
}
public static void trace(
final String logText,
final boolean provideRuntimeInfo){
if(provideRuntimeInfo){
log.trace(getMsg(logText));
}else{
log.trace(logText);
}
}
public static void trace(
final Exception error,
final boolean provideRuntimeInfo,
final boolean doLog){
if(!doLog){
return;
}
if(provideRuntimeInfo){
log.trace(getMsg(error));
}else{
log.trace(error.getMessage());
}
}
public static void evalTrace(
final String logText){
evalLog.trace(logText);
}
public static void evalBlankTrace(
final String logText){
evalBlankLog.trace(logText);
}
public static void debug(
final Exception error){
log.debug(getMsg(error));
}
public static void debug(
final Exception error,
final String logText){
log.debug(getMsg(error, logText));
}
public static void debug(
final String logText){
log.debug(getMsg(logText));
}
// public static void warn(
// final Object warning,
// final Exception error){
//
// log.warn(getMsg(SSStrU.toStr(warning) + SSStrU.blank + SSStrU.toStr(error)));
// }
public static void warn(
final Exception error){
log.warn(getMsg(SSStrU.toStr(error)));
}
public static void warn(
final SSWarnE warning,
final Exception error){
log.warn(getMsg(SSStrU.toStr(warning) + SSStrU.blank + SSStrU.toStr(error)));
}
public static void warn(
final Object logText,
final Exception error){
log.warn(getMsg(SSStrU.toStr(logText) + SSStrU.blank + SSStrU.toStr(error)));
}
public static void err(
final Exception error,
final String logText,
final boolean provideRuntimeInfo){
if(error == null){
return;
}
if(provideRuntimeInfo){
err(error, logText);
}else{
log.error(logText);
}
}
public static void err(
final Exception error,
final String logText){
if(error == null){
return;
}
log.error(getMsg(error, logText));
// error.printStackTrace();
}
public static void err(
final Exception error,
final boolean fromRegistry){
if(error == null){
return;
}
log.error(getMsg(error, fromRegistry));
// error.printStackTrace();
}
public static void err(final SSErrE code){
if(code == null){
return;
}
log.error(getMsg(code.toString()));
// error.printStackTrace();
}
public static void err(
final SSErrE code,
final boolean fromRegistry){
if(code == null){
return;
}
log.error(getMsg(code.toString(), fromRegistry));
// error.printStackTrace();
}
public static void err(final Exception error){
if(error == null){
return;
}
log.error(getMsg(error));
// error.printStackTrace();
}
// public static void err(final String errorMsg){
//
// if(errorMsg == null){
// return;
// }
//
// log.error(getMsg(errorMsg));
// }
// public static void errThrow(final Exception error) throws Exception{
//
// if(error == null){
// return;
// }
//
// log.error(getMsg(error));
//
//// error.printStackTrace();
//
// throw error;
// }
// public static void fatalThrow(final Exception error) throws SSErr{
//
// if(error == null){
// throw new Exception("error to log null");
// }
//
// log.fatal(getMsg(error));
//
//// error.printStackTrace();
// }
}